/*
 * @Description:
 * 
 * @Author: rendc
 * 
 * @Date: 2025-08-13 10:19:45
 * 
 * @LastEditors: rendc
 * 
 * @LastEditTime: 2025-08-13 11:15:58
 */

import java.util.Comparator;
import java.util.Set;
import java.util.TreeSet;

public class Test02TreeSet {

  public static void main(String[] args) {
    // 1. 创建一个实现了 Comparator 接口的类的对象
    Comparator<Student> comparator = new Comparator<Student>() {
      // 通过匿名内部类实现了 Comparator 接口
      // 2. 重写里面的 compare() 方法
      @Override
      public int compare(Student s1, Student s2) {
        int num;
        // 负数 0 正数
        // age升序
        num = s1.getAge() - s2.getAge();
        if (num == 0) {
          // name降序
          // num = s2.getName().compareTo(s1.getName());
          num = -s1.getName().compareTo(s2.getName());
        }
        return num;
      }
    };
    // 3. 创建一个TreeSet类对象时，将比较器对象作为参数传递给构造函数
    Set<Student> set = new TreeSet<>(comparator);
    Student s0 = new Student("as", 19);
    Student s1 = new Student("cs", 19);
    Student s3 = new Student("bw", 19);
    Student s2 = new Student("as", 20);
    Student s4 = new Student("as", 10);
    set.add(s0);
    set.add(s3);
    set.add(s1);
    set.add(s2);
    set.add(s4);
    // 元素插入过程 1. 排序 2. 去重
    // 当TreeSet插入元素的时候会调用 compareTo方法
    // 如果方法返回
    System.out.println("set:" + set);
  }
}